package daos;

import java.util.Date;

import org.hibernate.Query;
import org.hibernate.Session;

import services.AbstractService;
import varios.Jugador;
import excepciones.JugadorInexistenteException;
import excepciones.UsuarioOPasswordInvalidosException;

public class JugadorDAO {
	
	public void registrarJugador(Jugador jugador) {
			AbstractService.tl.get().save(jugador);
	}
	
	public Jugador obtenerJugador(String alias) {
		Session session = AbstractService.tl.get();
		Query q = session.createQuery("from varios.Jugador where alias = :alias");
		q.setParameter("alias", alias);
		Jugador jugador = (Jugador) q.uniqueResult();
		return jugador;
	}
	
	public Jugador obtenerJugador(String alias, String password) {
		Jugador jugador = this.obtenerJugador(alias);
		if(jugador == null || ! jugador.getPassword().equals(password)){
			throw new UsuarioOPasswordInvalidosException();
		}
		return jugador;
	}
	
	public Jugador obtenerJugador_exception(String alias){
		Jugador jugador = this.obtenerJugador(alias);
		if(jugador == null){
			throw new JugadorInexistenteException();
		}
		return jugador;
	}

	public void cambiarPassword(String alias, String viejaPassword, String nuevaPassword) {
		Jugador jugador = this.obtenerJugador(alias, viejaPassword);
		jugador.setPassword(nuevaPassword);
		jugador.setFechaModificacion(new Date());
	}

	public void eliminarJugador(Jugador jugador) {
		Session session = AbstractService.tl.get();
		session.delete(this.obtenerJugador(jugador.getAlias()));
	}
}
